package com.liu.msmService.controller;

import com.liu.R;
import com.liu.msmService.service.MsmService;
import com.liu.msmService.utils.RandomUtil;
import com.liu.serviceBase.exception.MyException;
import org.apache.commons.lang3.ObjectUtils;
import org.bouncycastle.pqc.math.linearalgebra.RandUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.concurrent.TimeUnit;

/**
 * **************
 * 项目名称: testgulili <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/1/30 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
@RestController
@CrossOrigin
@RequestMapping("/msmService/msm")
public class MsmController {

    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send/{phone}")
    public R sendPhone(@PathVariable("phone") String phone) {
        System.out.println("========== 手 机 号 码 =============： " + phone);

        if (ObjectUtils.isEmpty(phone)) {
            throw new MyException(20001, "phone为空");
        }
        /*   每次创建验证码需要将其传入Redis并设置有效时间 */

//        判断Redis中 是否存在 手机号对应的验证码
        String code = (String) redisTemplate.opsForValue().get(phone);
//        若存在直接返回
        if (ObjectUtils.isNotEmpty(code)) {
            return R.ok().data("code", code);
        } else {
//        若不存在 则随机生成
            code = RandomUtil.getSixBitRandom();

            boolean isSend = msmService.send(code, phone);
            if(isSend) {
                redisTemplate.opsForValue().set(phone,code,5,TimeUnit.MINUTES);
                return R.ok();
            } else {
                return R.error().message("发送短信失败,msmService.send()有问题");
            }
        }

    }



}
